package org.example.struct.array;

import com.alibaba.fastjson.JSON;

/**
 * @author liyishan
 * @date 2023/7/17 14:43
 * @apiNote https://leetcode.cn/problems/remove-duplicates-from-sorted-array/
 * 26   删除有序数据中的重复项
 */

public class Test00026RemoveDuplicates {
    public static void main(String[] args) {
        int[] a = new int[]{1, 1, 1, 4, 5, 6};
        int count = test1(a);
        System.out.println(count + "  array:" + JSON.toJSON(a));
    }

    /**
     * 双指针  ，只需要在数组前保持正确   后面的数据不动
     * @param nums
     * @return
     * 时间复杂度  O(N)     空间复杂度O(1)
     */
    private static int test1(int[] nums) {
        int fast = 1;
        int slow = 1;
        while (fast < nums.length) {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast];
                slow++;
            }
            ++fast;
        }
        return slow;
    }

    /**
     * 双指针  ，只需要在数组前保持正确   后面的数据不动
     * @param nums
     * @return
     * 时间复杂度  O(N)     空间复杂度O(N)
     */
    private static int test2(int[] nums){
        int slow = 1;
        for(int i=1;i<nums.length;i++){
            if(nums[i] != nums[i-1]){
                nums[slow] = nums[i];
                slow++;
            }
        }
        return slow;
    }


}
